import axios from 'axios'

export const mixin = {
  data() {
    return {
      delVisible: false, // 是否显示删除确认的提示
      updateVisible: false, // 是否显示修改表单
      addVisible: false, // 是否显示添加表单
      keyWord: '', // 搜索关键字
      total: 0, // 表格总条数
      current: 1, // 当前页码
      addForm: {},
      updateForm: {},
      ids: [], // 选中的id集合
      multipleSelection: [], // 列表中选中数据
      tableData: []
    }
  },
  methods: {
    showSuccess(msg) {
      this.$message.success(msg === undefined ? '操作成功' : msg)
    },
    showError(msg) {
      this.$message.error(msg === undefined ? '操作失败' : msg)
    },
    // 定位图片路径
    getImageUrl(url) {
      return `${axios.defaults.baseURL}/static_file/${url}`
    },
    // 文件上传请求
    uploadUrl(space, id) {
      return `${axios.defaults.baseURL}/${space}/upload/${id}`
    },
    // 图片上传前
    beforeImgUpload(file) {
      const isJPG = (file.type === 'image/jpeg') || (file.type === 'image/png')
      const isLt2M = file.size / 1024 / 1024 < 2
      if (!isJPG) {
        this.showError('上传头像图片只能是 jpg/png 格式!')
      }
      if (!isLt2M) {
        this.showError('上传头像图片大小不能超过 2MB!')
      }
      return isJPG && isLt2M
    },
    // 图片上传成功
    handleImgSuccess(res) {
      if (res.state === 200) {
        this.findRow()
        this.showSuccess()
      } else {
        this.showError()
      }
    },
    // 表格布尔型格式化
    formatBoolean(row) {
      return row.status || !row.isEnabled ? '是' : '否'
    },
    // 获取要删除列表的id
    handleDelete(row) {
      this.ids = [row.id]
      this.delVisible = true
    },
    // 批量删除
    handleDeleteBatch() {
      this.ids = this.multipleSelection.map(rows => rows.id)
      this.delVisible = true
    },
    // 获取当前页(val当前页)
    handleCurrentChange(val) {
      console.log(val)
      this.current = val
      this.findRow()
    },
    // 更新
    handleUpdate(row) {
      this.updateForm = row
      this.updateVisible = true
    },
    // 表格选择
    handleSelectionChange(row) {
      this.multipleSelection = row
    }
  }
}
